Skip to content

feat(web): add a public /download page for the desktop client - #87

Merged
venkateshsakamuri-lab merged 1 commit into
mainfrom
feat/desktop-download-page
Aug 27, 2026
Merged

feat(web): add a public /download page for the desktop client#87
venkateshsakamuri-lab merged 1 commit into
mainfrom
feat/desktop-download-page

Conversation

@venkateshsakamuri-lab

Copy link
Copy Markdown
Contributor

Adds a public /download page listing the DeepSQL Desktop installers, read live from the GitHub Releases API and grouped by platform with architecture detection.

Why the tag-prefix filter matters

The repo publishes two unrelated release series from one tags list: v1.3.0 (the DeepSQL app) and desktop-v* (the desktop client). /releases/latest returns the newest of either, so today it returns v1.3.0 — a naive download page would point every button at the wrong artifact. The page filters on the desktop-v prefix instead.

Public route

/download is added to AUTH_PUBLIC_PATHS in both src/lib/api/client.js and src/hooks/useAuth.jsx. Without it, useAuth's mount effect redirects any non-allowlisted path to /login when there is no session — bouncing exactly the logged-out visitors this page exists for.

The page uses fetch rather than lib/api/client.js deliberately: that module is the backend's axios layer (auth headers, refresh, error envelope), none of which applies to a third-party public API, and the page must work with no session and a down backend.

Honest empty states

"No desktop build published yet" is kept distinct from "could not reach GitHub", so a failed fetch can never render as an empty catalogue.

Verification

  • Rendered logged-out in a browser: correctly shows the no build published state, since no desktop-v* release exists yet.
  • With a stubbed release payload: correctly skips v1.3.0, selects desktop-v1.0.0, groups mac/windows/linux, labels Apple Silicon vs Intel/AMD64, highlights the detected platform, and shows the unsigned-macOS first-launch note.
  • npm run build passes; eslint reports 0 errors on changed files.

Not included

There are currently no downloadable assets — the desktop-v1.0.0 tag failed to build on all three platforms. The fix for that is a separate commit that cannot be pushed with the current token (.github/workflows needs the workflow OAuth scope); it will follow in its own PR.

🤖 Generated with Claude Code

Lists the desktop installers straight from the GitHub Releases API, grouped
by platform with architecture detection and the visitor's own platform
highlighted.

Filters releases on the desktop-v tag prefix rather than using
/releases/latest. The repo publishes two unrelated series from one tags
list — v1.3.0 (the app) and desktop-v* (this client) — and /releases/latest
returns the newest of either, so it hands back the app release and would
point every download button at the wrong artifact.

"No desktop build published yet" is kept distinct from "could not reach
GitHub", so a failed fetch can never render as an empty catalogue.

Adds /download to AUTH_PUBLIC_PATHS in both client.js and useAuth.jsx.
Without it, useAuth's mount effect redirects any non-allowlisted path to
/login when there is no session — bouncing exactly the logged-out visitors
the page exists for.

The page uses fetch rather than lib/api/client.js on purpose: that module is
the DeepSQL backend's axios layer (auth headers, refresh, error envelope),
none of which applies to a third-party public API, and the page must work
with no session and a down backend.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@venkateshsakamuri-lab
venkateshsakamuri-lab requested a review from a team as a code owner August 27, 2026 06:50
@venkateshsakamuri-lab
venkateshsakamuri-lab merged commit 804e713 into main Aug 27, 2026
9 checks passed
@venkateshsakamuri-lab
venkateshsakamuri-lab deleted the feat/desktop-download-page branch August 27, 2026 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant